/**
 * Created with IntelliJ IDEA
 * User:WZW
 * Date:2021-10-17
 * Time:23:22
 * Description:
 * psvm->main
 * sout->打印
 */

//类名：大驼峰 不要出现数字
//    IDEA不要安装中文插件 - 全英文
public class TestDemo {
    public static void main(String[] args) {
        //<<
        //0000 1011 << 1 -> 0001 0110  22  11*2^1
        //0000 1011 << 1 -> 0010 1100  44  11*2^2

        //>>符号位
        //0000 1011 >> 1 -> 0000 0101 ->5  11/2^1
        //0000 1011 >> 1 -> 0000 0010 ->2  11/2^2

        //1111 1111 >> 1 -> 1111 1111
        //1111 1111 >>> 1 -> 0111 1111  (无符号右移:不管符号位是啥，左边统一补0）

    }
    public static void main8(String[] args) {
        short s = 10;
        //s = (short）(s+9);
        s+=9;//自动强制类型转换

        //关系运算符的表达式返回值都是boolean类型
        int a = 10;
        int b = 20;
        System.out.println(a==b);
        System.out.println(a!=b);
        System.out.println(a<b);
        System.out.println(a>b);
        System.out.println(a<=b);
        System.out.println(a>=b);
        //if(布尔表达式)  ->  if(0) //err
        //表达式1 && 表达式2  这两个表达式都为布尔表达式
        //短路：如果表达式1为假，就不执行表达式2

        System.out.println(!(a<b));//!表达式
        System.out.println(!!(a<b));//!表达式
        //所有的表达式都必须是布尔表达式

        //&     |       不支持短路
        System.out.println(10>20&10/0==0);//异常
        System.out.println(10<20&10/0==0);//异常

    }
    public static void main7(String[] args) {
        int a = 1;
        int b = 2;//0不能作为除数
        System.out.println(a/b);//如果除数是0，程序会抛出异常（错误，程序就结束了）
        //Exception in thread "main" java.lang.ArithmeticException: / by zero
        //                                      算数异常                原因
        //at TestDemo.main(TestDemo.java:17)
        //  错误位置

        System.out.println(10%3);//1
        System.out.println(11.5%2);//1.5
        System.out.println(-10%3);//-1
        System.out.println(10%-3);//1
        System.out.println((-10%-3));//-1

    }
    public static void main6(String[] args) {
        String str = "123";
        int ret = Integer.valueOf(str);
        System.out.println(ret+1);
    }
    public static void main5(String[] args) {
        int num =10;
        String ret = String.valueOf(num);
        System.out.println(ret);

        String ret2=num+"";
        System.out.println(ret2);
    }
    public static void main4(String[] args) {
        //理解类型转换
        int a=10;
        long b=a;
        System.out.println(b);
        long l=12;
        int c=(int)l;//强制类型转换：有风险的
        //java本身是一个强类型语言
        //C语言 弱类型语言

        //int与boolean的转换 -> 不可转换

        //int与byte
        byte i = 1;
        byte j = 2;
        byte k = (byte)(a+b);//运算时会整型提升，不能直接赋给k

        byte k2 = 1+2;//在程序编译的时候，代码已经替换为byte k2 = 3; ->不会报错

        int i1 = 10;
        long j1 = 11;
        int k1 = (int)(i1+j1);
        //类型提升的意义：提高效率

    }
    public static void main3(String[] args) {
        //java中变量分为 成员变量（普通成员变量和静态成员变量） 和 局部变量
        //在java中没有全局变量的概念
        //局部变量在使用时必须先初始化

        //命名
        //字母 数字 下划线 美元符号
        //小驼峰 大驼峰

        //常量
        //1.字面值常量
        //2.final修饰的变量-》常量
        // 变量-》在程序运行的时候，可以修改。 - 即在程序运行的时候，才能知道值是几
        // 常量-》不可修改，在程序编译时就已经确定值了，只能初始化1次
        //建议常量命名用大写


    }
    public static void main2(String[] args) {
        //在JAVA当中，有字符串类型 -》引用类型
        //引用类型 String 数组 接口 - 本质是地址
        String str="hello";
        System.out.println(str);
        //注意
        System.out.println("hello"+"world");//拼接
        System.out.println("hello"+10+20);//其他数据类型和字符串使用+拼接，结果就是一个字符串
        System.out.println(10+20+"hello");//30hello
        System.out.println("hello"+(10+20));//hello30
        System.out.println(10+""+20+"hello");//1020hello

        //a=10,b=20
        System.out.println("a="+10+" b="+20);

        //转义字符 （同C）
    }

    public static void main1(String[] args) {
//        System.out.println("hello");
//        short s=10;//2  6   Short
        //包装类 可以看做是short的plus版本 只有8种基本基本数据类型 才有对应的包装类
        boolean flg=true;
        System.out.println(flg);
        //在JAVA中boolean只能有true、false两个值
        //不存在1表示真，0表示假的说法
        //在JVM的规范中，并没有规定布尔类型的大小，有些是1bit，有些是1byte

    }

}
